// 导入Shopify API相关模块
import { GraphqlQueryError } from "@shopify/shopify-api";
import shopify from "./shopify.js";

// 用于生成随机产品名称的形容词列表
const ADJECTIVES = [
  "autumn",     // 秋季的
  "hidden",     // 隐藏的
  "bitter",     // 苦的
  "misty",      // 朦胧的
  "silent",     // 安静的
  "empty",      // 空的
  "dry",        // 干燥的
  "dark",       // 黑暗的
  "summer",     // 夏季的
  "icy",        // 冰冷的
  "delicate",   // 精致的
  "quiet",      // 宁静的
  "white",      // 白色的
  "cool",       // 凉爽的
  "spring",     // 春季的
  "winter",     // 冬季的
  "patient",    // 耐心的
  "twilight",   // 黄昏的
  "dawn",       // 黎明的
  "crimson",    // 深红色的
  "wispy",      // 纤细的
  "weathered",  // 风化的
  "blue",       // 蓝色的
  "billowing",  // 翻滚的
  "broken",     // 破碎的
  "cold",       // 寒冷的
  "damp",       // 潮湿的
  "falling",    // 下降的
  "frosty",     // 霜冻的
  "green",      // 绿色的
  "long",       // 长的
];

// 用于生成随机产品名称的名词列表
const NOUNS = [
  "waterfall",  // 瀑布
  "river",      // 河流
  "breeze",     // 微风
  "moon",       // 月亮
  "rain",       // 雨
  "wind",       // 风
  "sea",        // 海洋
  "morning",    // 早晨
  "snow",       // 雪
  "lake",       // 湖泊
  "sunset",     // 日落
  "pine",       // 松树
  "shadow",     // 阴影
  "leaf",       // 叶子
  "dawn",       // 黎明
  "glitter",    // 闪光
  "forest",     // 森林
  "hill",       // 山丘
  "cloud",      // 云
  "meadow",     // 草地
  "sun",        // 太阳
  "glade",      // 林间空地
  "bird",       // 鸟
  "brook",      // 小溪
  "butterfly",  // 蝴蝶
  "bush",       // 灌木
  "dew",        // 露水
  "dust",       // 尘土
  "field",      // 田野
  "fire",       // 火
  "flower",     // 花
];

// 默认创建的产品数量
export const DEFAULT_PRODUCTS_COUNT = 5;

// GraphQL变更查询：创建产品
const CREATE_PRODUCTS_MUTATION = `
  mutation populateProduct($input: ProductInput!) {
    productCreate(input: $input) {
      product {
        id
      }
    }
  }
`;

/**
 * 产品创建器 - 批量创建示例产品
 * @param {Object} session - Shopify会话对象
 * @param {number} count - 要创建的产品数量，默认为5个
 */
export default async function productCreator(
  session,
  count = DEFAULT_PRODUCTS_COUNT
) {
  // 使用会话创建GraphQL客户端
  const client = new shopify.api.clients.Graphql({ session });

  try {
    // 循环创建指定数量的产品
    for (let i = 0; i < count; i++) {
      await client.request(CREATE_PRODUCTS_MUTATION, {
        variables: {
          input: {
            // 使用随机生成的标题创建产品
            title: `${randomTitle()}`,
          },
        },
      });
    }
  } catch (error) {
    // 处理GraphQL查询错误
    if (error instanceof GraphqlQueryError) {
      throw new Error(
        `${error.message}\n${JSON.stringify(error.response, null, 2)}`
      );
    } else {
      // 重新抛出其他类型的错误
      throw error;
    }
  }
}

/**
 * 生成随机产品标题
 * 通过随机选择一个形容词和一个名词组合成产品名称
 * @returns {string} 随机生成的产品标题，格式为"形容词 名词"
 */
function randomTitle() {
  // 从形容词列表中随机选择一个
  const adjective = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
  // 从名词列表中随机选择一个
  const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
  // 返回组合后的标题
  return `${adjective} ${noun}`;
}
